Modern computer systems are getting more and more complex due to the general trend that different applications are integrated into one and the same computer system. For example, in the automotive industry the amount of electronic systems within a vehicle has steadily increased in recent years. Typically, such computer systems comprise microcontrollers each having a central processing unit (CPU) which runs applications. In case of video applications which may be part of complex multi-media infotainment systems, navigation systems and instrument cluster systems, a graphics processing unit (GPU) is typically used to provide processing capability required for real-time graphics. The present invention and its underlying problem will hereinafter be described on the basis of a computer system which comprises such a GPU for processing graphics data, however, without restricting the invention to such application and computer system.
In order to provide better interaction between different applications providing graphics information to a user and in order to reduce circuitry resources the trend in the automotive industry goes towards computer systems with microcontrollers and GPUs, respectively allowing to perform multiple separate application programs thereon at the same time, i.e. multitasking computer systems. In this scenario where multiple applications in a multi tasking environment run on a computer system, already one resource demanding application may unduly delay the execution of the other applications running on the computer system. In particular, in case one or more safety critical applications are run on the computer system, unduly delays thereof are unacceptable. On contrary, the timely execution of safety critical applications has to be guaranteed, wherein the term timely execution should be understood as execution at a predetermined moment in time or within a predetermined time window. In order to ensure timely execution, the execution of one or more applications run on the computer system may be prioritized over the other applications.
Hence, in much safety critical applications it is necessary to estimate the worst case operation time for specific application programs or at least predict the run-time behaviour of such application programs. Major factors, which affect the run-time behaviour of an application, are instruction execution time at the processing unit and the time to provide the input data at the processing unit and to save the processing results. The latter time is inter alia dependent on the amount of data to be communicated between memory and processing unit and the data throughput capacity of the medium, the data bus infrastructure, used to communicate the data between them.
In case of static allocation of system resources, profiling based approaches can be employed. However, for computer systems which are operated as an open platform where different software applications and tools are executable, in particular from different software providers, this is a not a trivial approach. The actual set of applications executed substantially simultaneously may change at any time and is unknown or at least not completely defined at the time of development of such computer systems. Referring back to the aforementioned example, such a use case can become reality when consolidating the cars instrument cluster and infotainment systems into one single system, which e.g. allows a user for installing software application to enhance the infotainment functionality. Since the instrument cluster being the most demanding and security critical module, it needs to have priority access to the GPU, in particular in a timely manner and with a level of determinism. To be able to guarantee the number of frames per second required by the core component of this instrument cluster, one has to estimate the required run-time duration of the other modules accessing the same GPU substantially at the same time.
Estimating the runtime of an application or a part thereof that runs on the GPU implies typically the evaluation of the bandwidth required for data transaction or the cycle count spent in executing GPU instructions. The present invention addresses an approach based on an estimation of the impact of the bandwidth on the run-time behaviour of an application since this value is expected to be one of the major factors determining the time consumption since graphics processing is typically data-demanding.
There are various possibilities described in the art which are dealing with bandwidth prediction (or bandwidth estimation). One approach for bandwidth prediction is described in the thesis “GPU performance prediction using parameterized models”, from Andreas Resios, Utrecht University, August 2011, (Supervisor at Utrecht University: Prof. Dr. S. Doaitse Swierstra), ICA-3426874. In this thesis it is proposed to estimate the bandwidth of the GPU by using a linear curve which should approximate an envelope function of the bandwidth. However, according to this approach, no feedback of the bandwidth estimation is given. Further, no different curves are used for the impact of different instructions, such as read or write, to the behavior on the bandwidth. Further, no multiple envelopes are used, even though different instructions to access the memory, such as load or store, heavily influence the bandwidth prediction in a different manner. Therefore, the bandwidth prediction as described in the above thesis is not suitable especially for those codes which comprise many different instructions. This is in particular an issue for safety critical modules operated by the microprocessor. In particular, then it is not possible to provide a reliable bandwidth estimation under scenarios where multiple applications are operated simultaneously on the processing system.
Consequently, there is a need to find a reliable possibility to estimate the runtime behaviour of different applications which run on the same processing unit by estimating the data transaction bandwidth required by the applications executed by the processing unit.